<?php
class class_Caja {
	private $_db; 
	function __construct(){
		$this->config();
	}
	function method_getOperaciones($params, $error){
		$mesMostrar = $params[0]->mesMostrar;
		$codClinica = $params[0]->cod_clinica;
		
		if($mesMostrar == "actual"){
			$mesMostrar=date("Y-m-d");	
		}
		else{
			$fecha = explode("/",$mesMostrar);
			$mesMostrar = $fecha[1]."-".$fecha[0]."-01";
		}
		$filtro="";
		if($params[0]->cod_rubro != ""){
				$filtro .= " AND caja_rubros.cod_caja_rubro = ".$params[0]->cod_rubro;
			if($params[0]->buscar != ""){
				$filtro .= " AND glosa LIKE '%".$params[0]->buscar."%'";
			}
		}
		$this->_db->setQuery("
			SELECT 
				caja.*, 
				caja.fecha, 
				usuarios.usuario, 
				caja_rubros.descripcion AS rubro 
			FROM caja 
			LEFT JOIN usuarios USING(dni_usuario)  
			LEFT JOIN caja_rubros USING(cod_caja_rubro)
			WHERE MONTH(fecha) = MONTH('".$mesMostrar."')
			AND YEAR(fecha) = YEAR('".$mesMostrar."') 
			AND cod_clinica = '".$codClinica."'
			" .$filtro. "
			ORDER BY cod_operacion ASC
		");
		$this->_db->alter();
        if (mysql_error()){
            $error->SetError(JsonRpcError_Unknown, mysql_error());
            return $error;
		}
		$result="";
		$result->values = array();
		$regs = $this->_db->loadResult();
		$row = array();
    	FOREACH ($regs as $reg)
		{
			if($reg->tipo == "I"){
				$ingreso = $reg->importe;
				$ingresoTotal+=$reg->importe;
				$egreso = "";
			}
			else if($reg->tipo == "E"){
				$egreso = $reg->importe;
				$egresoTotal+=$reg->importe;
				$ingreso = "";
			}
			array_push($row, (int)$reg->cod_operacion);
			array_push($row, $reg->fecha);
			array_push($row, $reg->rubro);
			array_push($row, $reg->glosa);
			if ($ingreso != ""){
				array_push($row, round($ingreso, 2));
			}
			else{
				array_push($row, $ingreso);
			}
			if ($egreso != ""){
				array_push($row, round($egreso, 2));
			}
			else{
				array_push($row, $egreso);
			}
			array_push($row, $reg->usuario);
			array_push($row, round($reg->total,2));
			array_push($result->values, $row);
			$row = array();
		}
		$result->mes = $fecha[0]."/".$fecha[1];
		$result->ingresoTotal = "$ingresoTotal";
		$result->egresoTotal = "$egresoTotal";
		$montoDisponible = $ingresoTotal - $egresoTotal;
		$result->montoDisponible = "$montoDisponible";
		return $result;
	}
	function method_insertOperacion($params, $error){
		$envio = array();
		$envio[0]=new stdClass();
		$envio[0]->mesMostrar = "actual";
		$envio[0]->cod_clinica = $params[0]->cod_clinica;
		$error ="";
		$total = $this->method_getOperaciones($envio, $error);
		$total->montoDisponible;
		if($params[0]->tipo == "I"){
			$totalActual = $total->montoDisponible + $params[0]->importe;
		}
		else{
			$totalActual = $total->montoDisponible - $params[0]->importe;
		}
		$this->_db->setQuery("
			INSERT INTO caja 
			(
				cod_clinica,
				fecha, 
				glosa, 
				tipo, 
				cod_caja_rubro, 
				importe, 
				total,
				dni_usuario
			) 
			VALUES 
			(
				'".$params[0]->cod_clinica."',				
				NOW(), 
				'".$params[0]->glosa."', 
				'".$params[0]->tipo."',
				'".$params[0]->cod_caja_rubro."', 
				'".$params[0]->importe."',
				'".$totalActual."',
				'".$_SESSION['dni_usuario']."' 
			)
			");
		$this->_db->alter();
		if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		return true;	
	}
	function method_montoDisponible($params, $error){
		$this->_db->setQuery("
			SELECT 
				tipo, 
				importe 
			FROM caja 
			WHERE MONTH(fecha) = MONTH(CURRENT_DATE)
		");
		$this->_db->alter();
        if (mysql_error()){
            $error->SetError(JsonRpcError_Unknown, mysql_error());
            return $error;
		}
		$regs = $this->_db->loadResult();
    	FOREACH ($regs as $reg){
			if($reg->tipo == "I"){
				$ingresoTotal+=$reg->importe;
			}
			else if($reg->tipo == "E"){
				$egresoTotal+=$reg->importe;
			}
		}
		return $montoDisponible = $ingresoTotal-$egresoTotal;
	}
	function method_printListado($params, $error){
		
		return("reports/cajaPrint.php?mesMostrar=".$params[0]->mesMostrar."&cod_clinica=".$params[0]->cod_clinica."&buscarRubro=".$params[0]->buscarRubro."&cod_rubro=".$params[0]->cod_rubro."&buscar=".$params[0]->buscar);
	}
	
	//GENERALES
    function method_getRubros($params, $error){
		$this->_db->setQuery("
			SELECT cod_caja_rubro AS value, descripcion AS label 
			FROM caja_rubros
			ORDER BY descripcion
		");
		$this->_db->alter();
    	if (mysql_error()) { $error->SetError(JsonRpcError_Unknown, (__FILE__ . " - " . (__LINE__ - 2) . ": " . mysql_error())); return $error; }
		$result = $this->_db->loadResult();
		return $result;
    }
    
	private function config(){
		require_once("conexion.php");
		$this->_db = new DataBase($SERVIDOR,$USUARIO,$PASSWORD,$BASE);
		mysql_query("SET NAMES utf8");
	}
}
?>
